from PIL import Image, ImageSequence
import os


def conv_gif_to_png(input_f_path, output_dir):
    f_name_without_extension = os.path.splitext(os.path.basename(input_gif_path))[0]

    # 确保输出目录存在
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 打开GIF文件
    with Image.open(input_f_path) as img:
        # 遍历GIF的所有帧
        for i, frame in enumerate(ImageSequence.Iterator(img)):
            # 保存每一帧为PNG图片
            frame.save(os.path.join(output_dir, f'{f_name_without_extension}__{i:04d}.png'), 'PNG')


os.chdir(r"E:\projects\unity\test_accumulative_attack\Assets\MyPackages\超级赛亚人爆气特效\Images\sy2")
input_gif_path = 'sy2.gif'  # 替换为你的GIF文件路径
output_png_dir = 'png'  # 输出的PNG图片所在的目录
conv_gif_to_png(input_gif_path, output_png_dir)